chibiham home page

eyecatch

Next.jsで作成しているこのホームページについて。

概要

ちびはむのプロフィール、ポートフォリオやブログ等を掲載し、エンジニアとしてのプレゼンスを上げるために開発・運用している。

アーキテクチャ

アーキテクチャ図

Vercel使用量ダッシュボード

技術スタック

デザイン

開発初期のデザイン検討として、Figmaを使用。個人開発のためオンコードで調整した方が早い側面があるため細部には時間をかけていない。

Figmaでのグリッドデザイン検討

アイコン・ロゴ・背景デザイン

機能

Grid Designによるレスポンシブデザイン

Tailwind CSSのGridを使用し、レスポンシブデザインに対応。

ダークモード対応

Tailwind CSSのダークモードのテーマを設定、各コンポーネントでダークモード使用時のCSSを調整し対応。ブラウザの設定によってダークモードが適用される。

多言語対応

i18next、next-i18n-routerを使用して多言語化対応。詳細は記事参照。

※ ブログやポートフォリオの記事コンテンツ自体は、ロケールごとにMarkdownファイルを用意することで多言語対応している。

SEO対策

検索エンジン最適化を多角的に実装している。

コンタクトフォーム

Next.jsのServer Actionsを使用したフォーム送信を実装。

メール送信確認画面

MDXカスタムコンポーネント

Markdownレンダリングにnext-mdx-remoteを使用し、以下のカスタムコンポーネントを実装している。

Atomic Designによるコンポーネント設計

コンポーネントをAtoms / Molecules / Organismsの3層で整理し、再利用性と保守性を確保している。

コンテンツ管理:Notion CMSからMarkdownへの移行

当初はNotionをCMSとして活用していた。Notion APIで取得した各Blockに対応するコンポーネントを一つ一つ用意し、Claude 3.7 Sonnetを活用してAPIの型に合わせたコンポーネントを生成・調整することで、ほぼ全てのブロックを約3hで実装した。

しかし、運用を続ける中でNotionをCMSとして使い続ける必要性が薄れ、シンプルなMarkdownファイルによる管理に移行した。

移行の背景:

現在の構成:

抽出された概念